package com.lyw.forum.service;

import com.lyw.forum.pojo.request.MessageCreateRequest;
import com.lyw.forum.pojo.response.MessageSelectResponse;

import java.util.List;

public interface IMessageService {
    /**
     * 发送站内信
     * @param messageCreateRequest 创建站内信对象
     */
    void create(MessageCreateRequest messageCreateRequest);

    /**
     * 根据id查询站内信
     * @param id 站内信id
     * @return 站内信
     */
    MessageSelectResponse selectById(Integer id);

    /**
     * 查询未读消息数量
     * @param id 接收者的用户id
     * @return 未读消息数量
     */
    Integer selectUnreadCount(Integer id);

    /**
     * 查询指定用户接收的所有消息
     * @param receiveUserId 接收者的用户id
     * @return 所有消息
     */
    List<MessageSelectResponse> selectByReceiveUserId(Integer receiveUserId);

    /**
     * 修改站内信的状态
     * @param id 站内信id
     * @param state 站内信状态
     */
    void updateStateById(Integer id, Byte state);

    /**
     * 回复
     * @param repliedId 被回复的站内信id
     * @param messageCreateRequest 创建站内信对象
     */
    void reply(Integer replied, MessageCreateRequest messageCreateRequest);
}
